import time
from functools import wraps


def timethis(func):
    '''
    Decorator that reports the execution time.
    '''

    @wraps(func)
    def wrapper(*args, **kwargs):
        start = time.time()
        result = func(*args, **kwargs)
        end = time.time()
        print(func.__name__, end - start)
        return result

    return wrapper


@timethis
def countdown(n):
    '''Counts down'''
    while n > 0:
        n -= 1


if __name__ == '__main__':
    print(countdown(10000))
    print(countdown.__name__)
    print('*' * 20)
    print(countdown.__doc__)
    print('*' * 20)
    print(countdown.__annotations__)
    print(countdown.__wrapped__(100))
